# coding = utf-8

from PySide6.QtWidgets import (QWidget,QTextEdit,QVBoxLayout,QApplication)
from PySide6.QtCore import Qt
import sys

class MyWiget(QWidget):

    def __init__(self):
        super().__init__()
        self.setupUi()

        # 设置文本编辑的上下文菜单策略 为 自定义上下文菜单
        self.textEdit.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)

        self.setEventBind()
        

    def setupUi(self):
        """设置界面
        """
        # 主布局使用垂直布局
        vbox = QVBoxLayout(self)

        # 创建文本编辑 
        self.textEdit = QTextEdit()

        # 添加控件到部件
        vbox.addWidget(self.textEdit)
        
    def setEventBind(self):
        """设置事件绑定
        """
        # 自定义上下文菜单请求信号 连接 自定义上下文菜单 槽函数
        self.textEdit.customContextMenuRequested.connect(self.showAddContextMenu)
        

    def showAddContextMenu(self,pos):
        """显示添加上下文菜单行为
        """
        menu = self.textEdit.createStandardContextMenu()
        testAction = menu.addAction("123 &W")
        testAction.setShortcut("Ctrl+E")
        testAction.triggered.connect(self.upDateText)
        menu.addAction("321")
        menu.exec(self.mapToGlobal(pos))

    def upDateText(self):
        """更新文本
        """
        self.textEdit.setPlainText("123")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    deSearch = MyWiget()
    deSearch.show()
    sys.exit(app.exec())